#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
时间戳管理器
- 1.generate_timestamp() - 负责生成"📅 创建于：YYYY-MM-DD HH:MM"格式的时间戳
- 2.add_timestamp_to_description() - 智能地将时间戳添加到事件描述中（空描述直接使用时间戳，有内容则换行添加）
- 3.has_timestamp() - 通过检查是否包含"📅 创建于："前缀来判断描述是否已有时间戳
"""

from datetime import datetime
from typing import Optional


class TimestampManager:
    """时间戳管理器"""
    
    TIMESTAMP_PREFIX = "📅 创建于："
    TIMESTAMP_FORMAT = "%Y-%m-%d %H:%M"
    
    @classmethod
    def generate_timestamp(cls, creation_time: Optional[datetime] = None) -> str:
        """
        生成格式化的创建时间戳
        
        Args:
            creation_time: 创建时间，默认使用当前时间
            
        Returns:
            格式化的时间戳字符串，如 "📅 创建于：2024-01-15 14:30"
        """
        if creation_time is None:
            creation_time = datetime.now()
            
        formatted_time = creation_time.strftime(cls.TIMESTAMP_FORMAT)
        return f"{cls.TIMESTAMP_PREFIX}{formatted_time}"
    
    @classmethod
    def add_timestamp_to_description(cls, original_desc: Optional[str], 
                                   timestamp: Optional[str] = None) -> str:
        """
        将时间戳添加到事件描述中
        
        Args:
            original_desc: 原始描述内容
            timestamp: 时间戳字符串，默认生成当前时间戳
            
        Returns:
            更新后的描述内容
        """
        if timestamp is None:
            timestamp = cls.generate_timestamp()
            
        # 如果描述为空，直接使用时间戳
        if not original_desc:
            return timestamp
            
        # 如果描述已存在，换行添加时间戳
        return f"{original_desc}\n{timestamp}"
    
    @classmethod
    def has_timestamp(cls, description: Optional[str]) -> bool:
        """
        检查描述中是否已包含创建时间戳
        
        Args:
            description: 事件描述
            
        Returns:
            True if 已包含时间戳，False otherwise
        """
        if not description:
            return False
            
        return cls.TIMESTAMP_PREFIX in description

if __name__ == "__main__":
    print("📅 TimestampManager 使用示例")
    print("-" * 30)
    
    # 基本用法
    timestamp = TimestampManager.generate_timestamp()
    print(f"生成时间戳: {timestamp}")
    
    # 添加到描述
    desc = "重要会议"
    new_desc = TimestampManager.add_timestamp_to_description(desc)
    print(f"\n原描述: {desc}")
    print(f"新描述: {new_desc}")
    
    # 检查是否已有时间戳
    has_ts = TimestampManager.has_timestamp(new_desc)
    print(f"\n包含时间戳: {has_ts}")